package com.bjsxt.user.service.impl;

import com.bjsxt.pojo.User;
import com.bjsxt.rpc.BjsxtRpcFactory;
import com.bjsxt.user.mapper.UserMapper;
import com.bjsxt.user.service.UserService;
import org.apache.zookeeper.KeeperException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;

/**
 * 服务对象，只要spring容器管理即可。
 * 现在缺少的是，注册的过程。
 * 也就是，调用自定义框架，把当前的对象和实现的接口信息。
 * 通过BjsxtRpcFactory注册到Zookeeper中。
 *
 * Spring容器管理的bean对象，是如何创建的？
 * 调用构造方法创建的。
 *
 * */
@Service
public class UserServiceImpl extends UnicastRemoteObject implements UserService {
    @Autowired
    private UserMapper userMapper;
    //模糊查询实现
    public List<User> getUsersByName(String name) throws RemoteException {
        return userMapper.selectByName(name);
    }
//无参构造函数
    public UserServiceImpl() throws RemoteException {
        System.out.println("userServiceImpl对象创建");
        try {
            BjsxtRpcFactory.registerService(UserService.class,this);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("注册服务：UserServiceImpl");
    }
}
